<?php
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////
// загружаем билиотеку функций для работы с данными и БД
require_once('../../config.php');

// установка шаблона и контекста страницы
$PAGE->set_context(context_system::instance());
$PAGE->set_pagelayout('standard');

// получаем параметры отображения
//$addvars['departmentid'] = optional_param("departmentid", 0, PARAM_INT);
$addvars['show'] = optional_param('show', '', PARAM_TEXT);

// добавление навигации 1-ого уровня
$PAGE->navbar->add(get_string('title', 'block_cleanup'), new moodle_url('/blocks/cleanup/index.php'));
$PAGE->set_heading(get_string('title', 'block_cleanup'));
$PAGE->set_title(get_string('title', 'block_cleanup'));

// добавление навигации 2-ого уровня
if ( isset($addvars['show']) AND !empty($addvars['show']) )
{
    if ($addvars['show'] == 'persons')
    {
        $PAGE->navbar->add(get_string('inactive_courses_list', 'block_cleanup'), new moodle_url('/blocks/cleanup/index.php'),
                 array('show' => 'courses'));
        $PAGE->set_heading(get_string('inactive_courses_list', 'block_cleanup'));
        $PAGE->set_title(get_string('inactive_courses_list', 'block_cleanup'));
        
    }else if ($addvars['show'] == 'courses')
    {
        $PAGE->navbar->add(get_string('inactive_persons_list', 'block_cleanup'), new moodle_url('/blocks/cleanup/index.php'),
                array('show' => 'persons'));
        $PAGE->set_heading(get_string('inactive_persons_list', 'block_cleanup'));
        $PAGE->set_title(get_string('inactive_persons_list', 'block_cleanup'));
    }
}

//проверка на логин
require_login();


// **********************************************
//           Внутренние функции плагина
// **********************************************

/** Получение таблицы с неактивными данными
 * @param string $type - тип данных
 * @return string - html-код таблицы
 */
function get_inactive_data_list($type='')
{
    global $DB;
    switch($type)
    {
        case "persons":
            // получаем данные неактивных пользователей
            $conds = array();
            return $DB->get_records("user", $conds);
            break;
        case "courses":
            // получаем данные неактивных курсов
            return $DB->get_records('course', array());
            break;
    }
    return array();
}

/** Получение таблицы с неактивными данными
 * @param string $type - тип данных
 * @return string/bool - html-код таблицы или fasle
 */
function get_inactive_data_table($type='',$depid=0)
{
    // получаем данные для таблицы
    $data = array();
    $data = get_inactive_data_list($type,$depid);

    $table = new stdClass();
    switch ($type)
    {
        case 'persons':

            $table->head = array('',
            'person_surname' => get_string('table_person_surname', 'block_cleanup'),
            'person_firstname' => get_string('table_person_firstname', 'block_cleanup'),
            'person_middlename' => get_string('table_person_middlename', 'block_cleanup'));

            $table->tablealign = 'center';
            $table->align = array('center','center','center','center');

            if ( !empty($data) )
            {
                foreach ($data as $value)
                {
                    $selection = "<input type='checkbox' name='inactive_flags[]' form='mform1' value='".$value->id."'/>";
                    $str = array('selection' => $selection,
                            'person_lastname' => $value->lastname,
                            'person_firstname' => $value->firstname,
                            'person_middlename' => $value->confirmed);

                    $table->data[] = $str;
                }
            }else
            {
                return false;
            }
            return print_table($table,true);

        case 'courses':
            $table->head = array('',
            'course_name' => get_string('table_course_name', 'block_cleanup'),
            'course_shortname' => get_string('table_course_shortname', 'block_cleanup'),
            'course_summary' => get_string('table_course_summary', 'block_cleanup'));

            $table->tablealign = 'center';
            $table->align = array('center','center','center','center');
            if ( !empty($data) )
            {
                foreach ($data as $value)
                {
                    $selection = "<input type='checkbox' name='inactive_flags[]' form='mform1' value='".$value->id."'/>";
                    $str = array('selection' => $selection,
                            'course_name' => $value->fullname,
                            'course_shortname' => $value->shortname,
                            'course_summary' => $value->summary);

                    $table->data[] = $str;
                }
            }else
            {
                return false;
            }
            return print_table($table,true);
    }
    return false;
}

/**
 * Вставляет запись в таблицу(ы) плагина
 * @param string $type - тип записей
 * @param array $data - id записей
 * @param int $depid - номер подразделения
 * @return mixed bool false если операция не удалась или id вставленной записи
 * @access public
 */
function send_cron_query($type,$data)
{
    global $DB, $USER;    
    if ( !is_array($data) OR empty($data) OR !is_valid_type($type) )
    {
        return false;
    }
    // проверка пройдена, формируем объект для вставки
    $obj = new stdClass();
    $obj->type = $type;
    $obj->personid = $USER->id;
    $obj->data = implode(',', $data);
    $obj->requestdate = time();
    $obj->status = 'requested';
    $obj->objectid = 0;
    return $DB->insert_record('block_cleanup',$obj);
}
/**
 * Проверка введенного типа записей для dof_storage_ccleaner::add_cron_query()
 * @return bool
 * @access protected
 */
function is_valid_type($type)
{
    switch($type)
    {
        case "persons":
            return true;

        case "courses":
            return true;
    }
    return false;
}

function delete_inactive_data()
{
    global $DB;
    mtrace("<br/>----------HELLO ALEX-----------<br/>");
    $table = 'user';
    // удаляем пользователей, зарегиных более полугода назад, ни разу не входивших на сайт
    $select = " timecreated < ". (time()-(3600*24*183)) ." AND lastlogin = 0 AND timecreated <> 0 ";
    return $DB->delete_records_select($table,$select);
}
?>